package com.eastfair.questionnaire.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.questionnaire.dto.QuestionnaireDTO;
import com.eastfair.questionnaire.entity.Questionnaire;
import com.eastfair.questionnaire.vo.DynamicQuestionnaireVO;
import com.eastfair.questionnaire.vo.QuestionnaireVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 问卷
 * </p>
 *
 * @author yuwx
 * @date 2021-08-18
 */
public interface QuestionnaireService extends SuperService<Questionnaire> {
    /**
    *Description 查询项目下所有问卷, 如果查询不到，则返回空列表
    *@Date 11:54 2021/8/24
    *@param projectId
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionnaireVO>
    *@Author yuwx
    **/
    List<QuestionnaireVO> listAll(Long projectId);

    /**
    *Description 获取问卷
    *@Date 16:07 2021/8/25
    *@param projectId
    *@param id
    *@return com.eastfair.questionnaire.vo.QuestionnaireVO
    *@Author yuwx
    **/
    QuestionnaireVO get(Long projectId, Long id);
    /**
    *Description 获取完整问卷，包含问题、答案
    *@Date 18:14 2021/8/25
    *@param projectId
    *@param id
    *@return com.eastfair.questionnaire.vo.QuestionnaireVO
    *@Author yuwx
    **/
    QuestionnaireVO getComplete(Long projectId, Long id);
    /**
    *Description 获取完整问卷，包含问题，答案，答题结果
    *@Date 18:15 2021/8/25
    *@param projectId
    *@param id
    *@param subjectType
    *@param subjectId
    *@return com.eastfair.questionnaire.vo.QuestionnaireVO
    *@Author yuwx
    **/
    QuestionnaireVO getCompleteWithAnswerResult(Long projectId, Long id, String subjectType, Long subjectId);
    /**
    *Description
     * 1.获取完整问卷，包含问题，答案，答题结果
     * 2.支持跳题
    *@Date 15:07 2021/8/26
    *@param projectId
    *@param id
    *@param subjectType
    *@param subjectId
    *@return DynamicQuestionnaireVO
    *@Author yuwx
    **/
    DynamicQuestionnaireVO getDynamicWithAnswerResult(Long projectId, Long id, String subjectType, Long subjectId);
    /**
    *Description 保存问卷 如果id存在则更新问卷
    *@Date 11:37 2021/9/1
    *@param questionnaire
    *@return com.eastfair.questionnaire.vo.QuestionnaireVO
    *@Author yuwx
    **/
    QuestionnaireVO save(QuestionnaireDTO questionnaire);
    /**
    *Description 删除问题，级联删除问题、答案
    *@Date 16:08 2021/8/25
    *@param projectId
    *@param id
    *@return void
    *@Author yuwx
    **/
    void deleted(Long projectId, Long id);
}
